Scroll to navigation

SSH-AGENT(1) General Commands Manual SSH-AGENT(1)

NOM

ssh-agentagent d'authentification

SYNOPSIS

ssh-agent [-a bind_address] [-c | -s] [-d] [command [args ...]]

ssh-agent [-c | -s] -k

DESCRIPTION

ssh-agent est un programme qui sert à manipuler des clefs utilisées pour une authentification par clef publique (RSA, DSA). L'idée, c'est que ssh-agent soit chargé au démarrage d'une session X ou terminal, puis que tous les autres programmes ou fenêtres soient lancés en tant que clients du programme ssh-agent. On peut trouver l'agent grâce à des variables d'environnement, et l'utiliser automatiquement pour une authentification lors d'une connexion à d'autres machines par ssh(1).

Les options sont les suivantes :

bind_address
Branche l'agent à une socket unix-domain bind_address. Par défaut /tmp/ssh-XXXXXXXX/agent.<ppid>.
Affiche des commandes C-shell sur la sortie standard stdout(3). C'est le comportement par défaut si votre SHELL ressemble à un shell de type csh.
Affiche des commandes Bourne shell sur la sortie standard stdout(3). C'est le comportement par défaut si votre SHELL ne ressemble pas à un shell de type csh.
Tue l'agent en cours d'exécution (identifié par la variable d'environnement SSH_AGENT_PID).
Mode de débogage. Avec cette option, ssh-agent ne crée pas de processus fils (cf. fork(1) ).

Si on fournit une ligne de commande, on l'exécute en tant que sous-processus de l'agent. Quand la commande s'arrête, l'agent en fait autant.

L'agent ne contient pas de clef quand il démarre. On en ajoute à l'aide de la commande ssh-add(1). Exécuté sans argument, ssh-add(1) ajoute les fichiers $HOME/.ssh/id_rsa, $HOME/.ssh/id_dsa et $HOME/.ssh/identity. Si les identités sont protégées par mot de passe (passphrase), ssh-add(1) le demande (à l'aide d'une petite application X11 si on est sous X11, ou dans un terminal sinon). Puis il envoie l'identité à l'agent. L'agent peut contenir plusieurs identités, et utiliser n'importe laquelle automatiquement. ssh-add -l affiche les identités chargées.

Le principe est le suivant : on exécute l'agent sur le PC, portable ou terminal local. On n'a pas besoin de stocker les données d'authentification sur une autre machine, et on n'envoie pas les mots de passe (passphrase) sur le réseau. La connexion à l'agent est transmise par SSH, donc l'utilisateur obtient les permissions déduites des identités de n'importe où sur le réseau, de manière sécurisée.

Il y a principalement deux manières de démarrer l'agent : soit l'agent exécute une nouvelle sous-commande pour laquelle on a exporté des variables d'environnement, soit il affiche les commandes (syntaxe sh(1) ou csh(1)) à exécuter dans le shell d'appel. Ensuite, ssh(1) vérifie ces variables et les utilise pour se connecter à l'agent.

L'agent n'envoie jamais une clef privée par son canal d'appel. Par contre, les opérations qui nécessitent une clef privée sont prises en charge par l'agent, et le résultat est envoyé à l'appelant. De cette manière, on cache les clefs privées aux clients de l'agent.

On crée une socket unix-domain, et le nom de cette socket est stocké dans la variable d'environnement SSH_AUTH_SOCK. La socket n'est accessible qu'à l'utilisateur. Toutefois, on peut facilement contourner cette restriction en tant que root ou une autre instance du même utilisateur.

La variable d'environnement SSH_AGENT_PID contient l'identifiant de processus (process ID) de l'agent.

L'agent s'arrête quand la commande passée sur la ligne de commande s'arrête.

FICHIERS

$HOME/.ssh/identity
Contient l'identité d'authentification RSA de l'utilisateur pour la version 1 du protocole.
$HOME/.ssh/id_dsa
Contient l'identité d'authentification DSA de l'utilisateur pour la version 2 du protocole.
$HOME/.ssh/id_rsa
Contient l'identité d'authentification RSA de l'utilisateur pour la version 2 du protocole.
/tmp/ssh-XXXXXXXX/agent.<ppid>
Les sockets unix-domain contenant les connexions aux agents d'authentification. Ces sockets ne devraient être lisibles que par leur propriétaire. Elle sont supprimées automatiquement lors de l'arrêt de l'agent.

AUTEURS

OpenSSH est dérivé de la version originale et libre ssh 1.2.12 par Tatu Ylonen. Aaron Campbell, Bob Beck, Markus Friedl, Niels Provos, Theo de Raadt et Dug Song ont corrigé de nombreux bugs, ré-ajouté des nouvelles fonctionnalités et créé OpenSSH. Markus Friedl a contribué au support des versions 1.5 et 2.0 du protocole SSH.

VOIR AUSSI

ssh(1), ssh-add(1), ssh-keygen(1), sshd(8)

September 25, 1999 Linux 5.14.0-427.18.1.el9_4.x86_64